In software engineering and development, software testing is carried out on software applications and/or software systems for rectifying faults in the software application and/or software systems. Generally, a test suite is used to test the software applications and/or the software systems. The test suite contains a plurality of test cases that are set of conditions under which a tester determines whether the one or more software applications and/or the software systems are working as they were originally designed to function. Each of the test cases have a set of test data, preconditions, expected results and post conditions, developed for a particular test scenario in order to verify compliance against a specific requirement. It is important to use an accurate test suite for testing a software application and/or software system or one of its features.
However, in any organization, test suites get generated and accumulated over a period of time for the software application and/or the software systems. These test cases or test scripts run into more than thousands and keep growing for every release of the software application and/or software systems. Over a period of time, a person/team working with the test suite would not have a clue on which test cases are current, which are obsolete, which need to be updated, how many are duplicates, etc. Whenever a major release of a software application and/or software system happens, the person/team finds it very hard to pick up a regression suite and execute it. Due to this, many defects get slipped through to production.
As an example, the regression suite for a banking application might contain the systems for account opening, transfer of funds, balance enquiry, application for a new card, etc. As time progresses, the bank may decide to add additional parameters to an account creation, such as Universal Account Number (or Social Security Number). The typical way of testing this will involve writing additional tests for ID creation and testing it, which will invalidate the existing suite of tests, for account creation. Moreover, the suites of tests which depict a particular functionality do not depict a business flow and will be extremely hard to maintain, as the steps will be voluminous.
The existing arts involve testing the software applications and/or software systems or one of its features without relying on the internal structure of the software applications and/or software systems or one of its features. In such cases, the one or more test cases comprising minimal paths or steps are used for the testing. However, such a way of testing does not solve the problems of identifying the one or more obsolete test cases in the suite, identifying one or more reusable test scenarios and eliminating redundant test scenarios from the one or more test cases.
The issues mainly faced in optimizing the test suite, comprising plurality of test cases, are identifying and eliminating redundant test cases, identifying reusable test functions of the test cases and generating an integrated business model using the reusable test functions to get an integrated view of the test suite.